package com.tedu.day02.oop;

/**
 * 继承关系---多态性
 * 作用: 父子级关系，实现方法互通(重写)
 *
 */
class A1{
    public void tell1(){
        System.out.println("A---你好，我是tell1");
    }
    public void tell2(){
        System.out.println("A---你好，我是tell2");
    }
}
class B1 extends A1{
    public void tell2(){
        System.out.println("B---你好，我是tell2");
    }
    public void tell3(){
        System.out.println("C---你好，我是tell3");
    }
}
public class 多态 {
    public static void main(String[] args) {
        //创建B1对象--创建1个对象  子类 【不存在多态，没有造型】
      //  B1 b=new B1();
      //  A1 a=b;    //子类交给父类保存  向上造型
        // 实现方法互通   调用父类与子类的方法
        // a.tell1();   // 父类中方法
       // a.tell2();   // 重写: 方法互通
  //向下造型: 实现方法互通，调用父类与子类的方法
        //①向上造型一次: 父类的引用指向子类的对象
        A1 a=new B1();
        //②子类接收:向上造型一次引用，并且强转
        B1 b=(B1) a;
        b.tell1();  //父类的方法---输出子类
        b.tell2();  //重写: 父类的方法---输出子类
        b.tell3();  // 子类的方法
    }
}
